package com.thitech.sif.socket;

import com.thitech.sif.Executor;

/**
 * Socket服务执行器接口
 * @author shisheng.lian
 * @date 2014-08-13
 */
public interface ISocketExecutor extends Executor {

	/**
	 * 该方法只提供给其它系统提供了JAR的情况下使用。封装Socket时，客户端的Output对象要继承SocketBaseOutPut对象
	 * 
	 * @param output
	 *             Socket服务Output对象，封装服务时只要new一个空对象传递古来即可
	 * @param scktHelperForJar
	 *             回调接口，封装服务时实现该接口的getInput及doExecute方法即可
	 * @return 返回最终处理过的Output对象，使用时把该对象强转成对应的子类对象  
	 */
	public abstract SocketBaseOutput execute(SocketBaseOutput output,
			SocketHelperForJar scktHelperForJar);

	/**
	 * 该方法使用正常的java程序调用Socket服务。封装此类Socket时，自定义客户端的Output对象要继承SocketBaseOutPut对象
	 * 
	 * @param output
	 *           Socket服务自定义Output对象，封装服务时只要new一个空对象传递过来即可
	 * @param scktHelper
	 *           回调街口，封装服务时实现该接口的doInput及getResult方法即可
	 * @return 返回最终处理过的Output对象，使用时把该对象强转成对应的子类对象
	 */
	public abstract SocketBaseOutput execute(SocketBaseOutput output,
			SocketHelper scktHelper);

}